//引入common.js
var common = require("common.js");

/**
 * 服务器提供的api接口地址
 */
var baseUrl = "https://127.0.0.1/guangz/wechat/";

/**
 * 封装GET请求
 * url //接口地址
 * successf //收到开发者服务成功返回的回调函数
 * data //请求的参数
 * failf //接口调用失败的回调函数
 */
function get(url, successf, data, failf){
  if (common.isEmpty(url)) { return false; }
  request(url, 'GET', successf, data, failf);
}

/**
 * 封装POST请求
 * url //接口地址
 * successf //收到开发者服务成功返回的回调函数
 * data //请求的参数
 * failf //接口调用失败的回调函数
 */
function post(url, successf, data, failf) {
  if (common.isEmpty(url)) { return false; }
  request(url, 'POST', successf, data, failf, 'application/x-www-form-urlencoded');
}

/**
 * 封装POST请求
 * url //接口地址
 * successf //收到开发者服务成功返回的回调函数
 * data //请求的参数
 * failf //接口调用失败的回调函数
 */
function postJSON(url, successf, data, failf) {
  if (common.isEmpty(url)) { return false; }
  request(url, 'POST', successf, data, failf);
}

/**
 * 封装PUT请求
 * url //接口地址
 * successf //收到开发者服务成功返回的回调函数
 * data //请求的参数
 * failf //接口调用失败的回调函数
 */
function put(url, successf, data, failf) {
  if (common.isEmpty(url)) { return false; }
  request(url, 'PUT', successf, data, failf);
}

/**
 * 封装DELETE请求
 * url //接口地址
 * successf //收到开发者服务成功返回的回调函数
 * data //请求的参数
 * failf //接口调用失败的回调函数
 */
function del(url, successf, failf){
  if (common.isEmpty(url)) { return false; }
  request(url, 'DELETE', successf, null, failf);
}

/**
 * 封装网络请求
 * url //接口地址
 * method //有效值：OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
 * successf //收到开发者服务成功返回的回调函数
 * data //请求的参数
 * failf //接口调用失败的回调函数
 * contentType //content-type: application/json或application/x-www-form-urlencoded
 * dataType //返回数据类型
 */
function request(url, method, successf, data, failf, contentType, dataType){
  if (common.isEmpty(url)){return false;}

  var token = wx.getStorageSync('loginToken');//登录后请求要带上token

  wx.request({
    url: baseUrl + url, //仅为示例，并非真实的接口地址
    method: common.isEmpty(method) ? 'GET' : method.toUpperCase(),
    data: common.defindEmpty(data, {}),
    header: {
      'content-type': common.defindEmpty(contentType, 'application/json'), 
      'login-token': common.defindEmpty(token, '')
    },
    dataType: common.defindEmpty(dataType, 'json'), //默认值 'json'
    success: function (res){
      if (res.data.success){
        if (common.isFunction(successf)) successf(res.data);
      }else {
        console.log(res.data.result);
      }
    },
    fail: function (err){
      console.log(err);
      if (common.isFunction(failf)) failf(err);
    }
  })
}

module.exports = {
  get: get,
  post: post,
  postJSON: postJSON,
  put: put,
  del: del,
  request: request
}